export const readFileSystem = () => {
    return new Promise((resolve, reject) => {
        // 创建一个隐藏的文件输入元素
        const input = document.createElement('input');
        input.type = 'file';
        input.style.display = 'none';
        // 限制文件类型
        const types = ['.txt', '.js', '.html', '.css', '.json', '.md',
            '.yaml', '.yml', '.c', '.java', '.py', '.go', '.rs', '.cpp',
            '.php', '.swift', '.ts', '.jsx', '.tsx', '.vue', '.svelte',
            '.less', '.sass', '.scss', '.h', '.sql', '.svg'];
        input.accept = types.join(',');
        // 当用户选择了文件后执行的逻辑
        input.onchange = (event: any) => {
            const file = event.target.files[0];
            if (file) {
                const reader = new FileReader();

                reader.onload = (e) => {
                    // 成功读取文件内容后的回调
                    resolve(e.target?.result);
                };

                reader.onerror = () => {
                    // 读取出错时的回调
                    reject(new Error('Error reading the file.'));
                };

                // 读取文件为文本格式
                reader.readAsText(file);
            } else {
                reject(new Error('No file was selected'));
            }
        };

        // 触发文件选择对话框
        document.body.appendChild(input); // 添加到DOM中以确保可以触发点击事件
        input.click(); // 自动触发click事件以打开文件选择对话框
        document.body.removeChild(input); // 使用后移除
    });
};
export const writeFileSystem = (content, fileName) => {
    // 创建一个 Blob 对象
    const blob = new Blob([content], { type: 'text/plain;charset=utf-8;' });

    // 创建一个隐藏的 <a> 元素
    const link = document.createElement('a');
    link.href = URL.createObjectURL(blob);
    link.download = fileName;

    // 将 <a> 元素添加到页面中
    document.body.appendChild(link);

    // 自动触发点击事件
    link.click();

    // 移除 <a> 元素
    document.body.removeChild(link);
}
